package com.qding.park.manager.facade.core.service.common;

import com.qding.park.common.core.exceptions.BaseException;
import com.qding.park.manager.common.pojo.ParkDataResult;
import com.qding.park.manager.facade.core.service.enums.TempPaymentEnum;
import com.qding.park.manager.pojo.TbMonthRent;
import com.qding.park.manager.pojo.TbReserve;

/**
 * @ClassName PayCommonFacade
 * @Description TODO(支付公共 service)
 * @author LeiYang
 * @Date 2017年5月5日 下午4:38:50
 * @version 1.0.0
 */
public interface PayCommonFacade {

    /**
     * @Description (TODO创建月租订单)
     * @param parkId 车场id
     * @param carNum  车牌
     * @param bjuserId  北京userid
     * @param orderType  订单类型
     * @return
     * @throws BaseException
     */
    ParkDataResult createmonthPayment(int parkId, String carNum, String bjuserId) throws BaseException;

    /**
     * @Description (TODO创建临停缴费单)
     * @param parkId
     * @param carNum
     * @param bjuserId
     * @param orderType
     * @return
     * @throws BaseException
     */
    ParkDataResult createTempPayment(int parkId, String carNum, String bjuserId, TempPaymentEnum tempPaymentEnum)
            throws BaseException;
    
    /**
     * @Description (TODO计算指定月数据 月卡费用)
     * @param orderId 订单号
     * @param monthNum  月数
     * @return
     * @throws BaseException
     */
    ParkDataResult calMonthFee(String orderId, int monthNum)throws BaseException;
    
    /**
     * @Description (TODO临停缴费支付订单)
     * @param orderId
     * @return
     * @throws BaseException
     */
     ParkDataResult createTemPayOrder(String orderId) throws BaseException;
    
    /**
     * @Description (TODO代缴费支付订单)
     * @param orderId
     * @return
     * @throws BaseException
     */
     ParkDataResult createTeneratPayOrder(String orderId) throws BaseException;
    
    /**
     * @Description (TODO月租支付订单)
     * @param orderId
     * @return
     * @throws BaseException
     */
     ParkDataResult createMonthPayOrder(String orderId) throws BaseException;
    
     /**
     * @Description (TODO月租支付成空)
     * @param orderId
     * @param realPayAmount
     * @return
     * @throws BaseException
     */
    ParkDataResult monthPaySuccessNotice(String orderId,int realPayAmount) throws BaseException;
     /**
     * @Description (TODO代缴支付成功)
     * @param orderId
     * @param realPayAmount
     * @return
     * @throws BaseException
     */
    ParkDataResult teneratPaySuccessNotice(String orderId,int realPayAmount) throws BaseException ;
     /**
     * @Description (TODO预定支付成功)
     * @param orderId
     * @param realPayAmount
     * @return
     * @throws BaseException
     */
    ParkDataResult reserverPaySuccessNotice(String orderId,int realPayAmount) throws BaseException;
     /**
     * @Description (TODO临停支付成功)
     * @param orderId
     * @param realPayAmount
     * @return
     * @throws BaseException
     */
    ParkDataResult tempPaySuccessNotice(String orderId,int realPayAmount)throws BaseException;
     /**
     * @Description (TODO月租续费支付失败)
     * @param orderId
     * @return
     * @throws BaseException
     */
    ParkDataResult monthPayFailNotice(String orderId) throws BaseException;
     /**
     * @Description (TODO代缴支付失败)
     * @param orderId
     * @return
     * @throws BaseException
     */
    ParkDataResult teneratPayFailNotice(String orderId) throws BaseException;
     /**
     * @Description (TODO预定支付失败)
     * @param orderId
     * @return
     * @throws BaseException
     */
    ParkDataResult reserverPayFailNotice(String orderId) throws BaseException;
     /**
     * @Description (TODO临停支付失败)
     * @param orderId
     * @return
     * @throws BaseException
     */
    ParkDataResult tempPayFailNotice(String orderId) throws BaseException;

    // ParkDataResult createTempPayment_rest_wx(String orderId) throws BaseException;
    //
    // ParkDataResult createTemPayOrder_rest(String orderId) throws BaseException;
    //
    // ParkDataResult createTeneratPayOrder_rest(String orderId) throws BaseException;
    //
    // ParkDataResult createMonthPayOrder_rest(String orderId) throws BaseException;
    //
    // /**
    // * cancelPayment_rest_wx(微信接口取消息订单)
    // *
    // * @Title: cancelPayment_rest_wx
    // * @Description: TODO
    // * @param @param orderId
    // * @param @return
    // * @param @throws BaseException 设定文件
    // * @return ParkDataResult 返回类型
    // * @throws
    // */
    // ParkDataResult cancelPayment_rest_wx(String orderId)throws BaseException;
}
